Syntax10.Scn.Fnt MODULE MacTypes; (*Macintosh OS Interface Module for MacOberon 2.2, Michael Franz, 9.10.91*) IMPORT SYSTEM; TYPE PackedChar*= CHAR; (* Character Type as Element of PACKED ARRAY *) UnpackedChar*= INTEGER; (* Macintosh Character Type *) SignedByte*= SHORTINT; (* Any byte in memory *) PackedByte*= SYSTEM.BYTE; (* Byte as Element of PACKED ARRAY *) UnpackedByte*=INTEGER; (* Macintosh Byte Type is a subrange [0..255] of INTEGER *) Fixed*= LONGINT; (* Fixed point arithmetic type *) OSErr*= INTEGER; (* Error code *) OSType*= LONGINT; (* File Type *) ResType*= LONGINT; (* Resource Type *) Data*= RECORD END; (* Base Type of Anything *) Ptr*= POINTER- TO Data; (* Untagged blind pointer *) Handle*= POINTER- TO RECORD p*: Ptr END; (* Untagged pointer to a master pointer *) ProcPtr*= POINTER- TO RECORD proc: PROCEDURE END; (* Pointer to executable code *) ProcHandle*= POINTER- TO RECORD p*: ProcPtr END; Point*= RECORD v*, h*: INTEGER END; Rect*= RECORD top*, left*, bottom*, right*: INTEGER END; Str15* = ARRAY 16 OF PackedChar; Str63* = ARRAY 64 OF PackedChar; Str255*= ARRAY 256 OF PackedChar; StringPtr*= POINTER- TO Str255; StringHandle*= POINTER- TO RECORD p*: StringPtr END; PROCEDURE - Debugger*() 0A9H, 0FFH; PROCEDURE - DebugStr*(aStr: Str255) 0ABH, 0FFH; PROCEDURE SetStr255*(VAR theStr255: Str255; chars: ARRAY OF CHAR); VAR i: INTEGER; ch: CHAR; BEGIN i:=0; REPEAT ch:=chars[i]; INC(i); theStr255[i]:=ch UNTIL (ch = 0X) OR (i=256); theStr255[0]:=CHR(i-1) END SetStr255; PROCEDURE GetStr255*(VAR theStr255: Str255; VAR chars: ARRAY OF CHAR); VAR n: INTEGER; ch: CHAR; BEGIN n:=ORD(theStr255[0]); IF LEN(chars) < n THEN n:=SHORT(LEN(chars)) END; chars[n]:=0X; WHILE n > 0 DO ch:=theStr255[n]; DEC(n); chars[n]:=ch END END GetStr255; END MacTypes.